The present invention relates to providing a user working in multiple computing environments with a single, unified environment, and more particularly but not exclusively to the seamless integration of multiple computing environments in an information technology (IT) infrastructure.
The growing complexity and variations in the deployment of computing environments in the modern IT infrastructure have created the need to enable a single user to work concurrently in multiple computing environments, each having different characteristics.
Examples of working within multiple computing environments include:                1. The simultaneous use of applications running on different operating systems (such as Windows and Unix) or a different version of the same operating system (such as Windows 95 and Windows XP).        2. The simultaneous use of applications that cannot coexist on the same environment, for instance because they use different versions of shared libraries (e.g. DLLs).        3. The need for backward compatibility, for example to enable users to run several versions of the same application for purposes such as accessing content produced by previous versions of the application.        4. The need to access legacy environments such as mainframe applications.        5. The simultaneous use of applications running on different environments, or even different computer networks or infrastructures. For example, agents and resellers who need to access the computing environments of more than one vendor or service provider, employees of organizations that went through merge or acquisition, remote users such as sales persons who need to connect the Internet and the corporate network.        6. Securing a computing environment and network resources against external security threats.        7. Regulatory or business requirements to separate environments that contain regulated data from other environments, and specifically from outward facing environments such as the Internet.        8. Creating greater overall stability by separating stable and unstable environments. For example, in order to allow employees to use an unmanaged home PC to access the organization's resources, or to allow employees to create an environment where they can install evaluate and use unmanaged and personal applications.        
Addressing these needs in a manner that suits day-to-day use requires a solution that maintains isolation between the various environments. This prevents the computing environments from posing security and stability risks to one another and to avoid unauthorized access to data. However, real environment isolation based on physical separation between computers and networks results in a poor user experience, sometimes preventing essential business data transfer, and immensely complicating operations and workflow.
It is therefore a requisite of any solution designed for day-to-day use to create a user experience which is as smooth and transparent as possible, thus reducing the inconvenience and amount of training needed for the user to operate simultaneously within multiple computing environments and simplifying day-to-day use, minimizing human errors, and reducing support calls.
Several existing solutions address the problem by providing a limited solution to one or more of the issues discussed above.
When approaching environment isolation, virtual machines (such as VMWare and Microsoft virtual PC) and remote desktop technologies (such as terminal services and Citrix) provide a means for creating an isolated environment, either on top of the existing user host or by accessing a physically separated environment within a server.
Both solutions allow a single user to work on other environments in addition to his host environment, while providing separation between the environments (i.e. preventing data from entering or leaving the environment), thus ensuring the environment is truly isolated.
One shortcoming of these approaches is that data transfer is sometimes required, as most users rely on transferring data between the various applications they simultaneously use to perform day-to-day business activities. There are currently two main approaches to transferring data between environments:                1. Complete separation, with no connectivity or data transfer, usually resulting in user inconvenience.        2. Enabling certain data transfers like clipboard operations, drag-n-drop or sharing certain file locations. However, once enabled the environments are exposed to security risks from one another.        
Currently, only a limited number of applications, such as Citrix Presentation Server and some add-ons for Terminal Services, combine the local and remote windows into a single desktop environment by providing seamless windows integration, allowing clipboard integration, and so forth. However, these solutions do not address all issues relating to computing environment unification, such as synchronizing environments and user settings, sharing printers, incorporating user access to applications running on different environment, in a manner that is transparent to the user. Additionally, these solutions are not available for virtualized platforms (e.g. VMWare and Microsoft Virtual PC).
An additional issue that must be addressed in order to provide a comfortable user experience is the method by which one of the computing environments is chosen for a given user operation. The most common approach today is to require the user to manually choose an environment. This may cause human mistakes and inconvenience.
An alternate approach for selecting a current computing environment (implemented for instance in Citrix Presentation Server) creates a mechanism which allows an administrator to choose whether specific application or data type are processed locally or on the remote computer. However this approach does not allow granular decisions on a per file basis, such as based on the file's originating environment.
A different important scenario for computing environment unification is a system constellation in which one or more of the computing environments are virtual environments. A discussion of the limitations of current attempts to integrate virtual machines into a single user environment is found in the article by Raymond Chen entitled “Running old programs in a virtual machine doesn't necessarily create a good user experience”, at blogs.msdn.com/oldnewthing/archive/2005/10/05/477317.aspx. Problems cited with current solutions include:                1. The user must manually start and/or log on to each of the computing environments.        2. In order to operate applications on multiple computing environments, the user must manually move between the different environments.        3. Separate task bars for each environment        4. Problematic data transfer between environments        5. Different keyboard controls for each environment        
In the virtualized environment use case, patent applications 20060136910, 20060136911 and 20060136912 suggest a concept of allowing access to several virtual environments, potentially running on the same user machine, using a unification console. However, these approaches do not apply the case where one of the computing environments the user's host environment or a remote desktop.
Thus, none of the currently available approaches provides a solution which is appropriate for a diverse user environment, which may include virtual machines, the user's host machine, and/or remote desktops. Furthermore, none of the existing solutions succeeds in unifying all aspects of the user's experience in a transparent manner and without inconveniencing the user.
There is a need for a secure solution which can provide a smooth user experience (similar to that of a single environment) regardless of the underlying platforms (such as virtual machines or remote desktops) or operating systems. The solution should include improved control of data transfer between computing environments and better methods for selecting a computing environment for a given operation.
There is thus a widely recognized need for, and it would be highly advantageous to have, a system and method for integrating multiple computing environments into a unified environment devoid of the above limitations.